// 所有的 api  接口路由 都写在这个文件里面

const express = require('express')
const router = express.Router()
const db = require('../db')
const cn = require('china-region')
const { ObjectId, ObjectID } = require('bson')

// 检测 注册时 用户名是否已经注册
router.get('/check-username', async (req, res) => {
    // 获取get请求中的参数
    const { username } = req.query;
    // 检查必要的参数 username
    if (!username?.trim()) {
        return res.status(400).json({ status: 'fail', message: '没有携带必要的参数 username' })
    }

    // 在数据库中进行查找
    const result = await db.findOneUser({ username })
    // 如果在数据库中找到了输入的用户名  就返回一个错误信息  否则就返回成功的信息
    if (result) {
        return res.json({
            status: 'fail',
            message: '用户名已注册'
        })
    }
    return res.json({
        status: 'success',
        message: '用户名可用'
    })

})

// 省市区(县) 三级联动
// 省  接口
router.get('/province', (req, res) => {
    const { code } = req.query
    // if (!code?.trim()) {
    //     return res.status(400).json({ status: 'fail', message: "请输入必填项code" })
    // }
    res.json(cn.getProvinces(code))
})
// 市  接口
router.get('/city', (req, res) => {
    const { code } = req.query;
    console.log("code", code);
    res.json(cn.getPrefectures(code))

})
router.get('/county', (req, res) => {
    const { code } = req.query
    res.json(cn.getCounties(code))
})


// 获取文章接口
router.get('/post', async (req, res) => {
    const { page = 0, limit = 5 } = req.query
    // 查找文章
    const posts = await db.findPost({}, { limit: Number(limit), skip: page * limit })
    res.json(posts)
})

// 创建评论  登录后才能访问
router.get('/comment', async (req, res) => {
    if (!req.session.user) return res.status(401).json({ msg: '该功能需要登录用户才能访问' })
    const authorId = new ObjectId(req.session.user._id)
    const { content, postId } = req.query
    // 判断 如果内容 和 postId 为空 则返回status：400 bad request
    if (!content) {
        return res.status(400).json({ msg: 'content不能为空' })
    }
    if (!postId) {
        return res.status(400).json({ msg: 'postId不能为空' })
    }
    const result = await db.addComment({ authorId, content, postId: new ObjectID() })
    return res.json(result)
})


module.exports = router
